package com.lib.net.interceptor

import com.lib.base.base.BaseApplication
import com.lib.base.utils.NetUtils
import okhttp3.Interceptor
import okhttp3.Response

/**
 * @author
 * @desc 网络请求前判断联网，进行数据获取模式选择的拦截器
 */

class NetWorkInterceptor : Interceptor {
    override fun intercept(chain: Interceptor.Chain): Response {
        var request = chain.request()
        //网上很多示例代码都对在request请求前对其进行无网的判断，其实无需判断，无网自动访问缓存
        //        if (!NetUtils.isConnected(BaseApplication.appContext!!)) {
        //            request = request.newBuilder().cacheControl(CacheControl.FORCE_CACHE).build()
        //        }

        val response = chain.proceed(request)
        if (!NetUtils.isConnected(BaseApplication.appContext!!)) {

            val maxAge = 60 //缓存失效时间，单位为秒
            response.newBuilder()
                .header("Cache-Control", "public,max-age=$maxAge")
                .addHeader("Accept-Encoding", "gzip")
                .addHeader("version", "1.0")
                //清除头信息，因为服务器如果不支持，会返回一些干扰信息，不清除下面无法生效
                .removeHeader("Pragma")
                .build()
        } else {
            //这段代码设置无效
            val maxAge = 60 * 60 * 24 * 1
//            response.newBuilder()
//                .header("Cache-Control", "public, only-if-cached, max-stale=$maxAge")
//                .header("Accept-Encoding", "gzip")
//                .header("version", "1.0")
//                // 清除头信息，因为服务器如果不支持，会返回一些干扰信息，不清除下面无法生效
//                .removeHeader("Pragma")
//                .build()
        }
        return response

    }
}